package com.ys.control;

import com.ys.bean.UserInfoBean;
import com.ys.service.IUserInfoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.annotation.Resource;
import java.util.List;

/**
 * 表单数据和Control层的方法参数之间具有一一映射关系；
 *  要求；前台页面的表单控件的name属性值和Control层方法参数的名字一致即可；
 *
 */

@Controller
public class UserLoginControl {
    @Resource
    private IUserInfoService userInfoService;

    @RequestMapping("login1")
    public String toLogin1(String userName, String userPsw) {
        System.out.println("后台登录处理：" + userName + ":" + userPsw);

        //返回视图路径
        return "logined";
    }

    /**
     * 如果方法参数名和前台页面的表单控件的name属性值不一样，则需要使用 @RequestParam 注解进行绑定
     */

    @RequestMapping("/login2")
    public String toLogin2(@RequestParam("userName") String userN, String userPsw) {
        System.out.println("后台登录处理：" + userN + ":" + userPsw);

        //返回视图路径
        return "logined";
    }

    /**
     *  映射关系：要求实体类的属性名和前台页面的表单控件的name属性值一一对应

     *    ★  返回中文为乱码问题？？？？？？ 如果使用 @RequestParam 对方法参数进行绑定，是否可行？？？？？？
     * @param userInfoB
     * @return
     */
    @RequestMapping("/login3")
    public String toLogin3(UserInfoBean userInfoB) {
        if (userInfoB!=null) {
            System.out.println("后台登录处理：" + userInfoB.getUsername() + ":" + userInfoB.getUserpsw());
        }else {
            System.out.println("后台登陆:null");
        }
        //调用service的接口方法，进行登陆的业务逻辑处理
       List<UserInfoBean> lstUserInfos = userInfoService.dologin(userInfoB);

        //登陆判定
        if (lstUserInfos!=null&&lstUserInfos.size()>0){
              //登陆成功
            System.out.println("登陆成功："+lstUserInfos.get(0).toString());
                 // 返回视图路径
                    return "logined";
        }else {
            //登录不成功
            System.out.println("登录失败");
            //返回登录页面
            return "../../index";
        }

    }
}